package com.ruoyi.college.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

import java.util.Date;

/**
 * 实验报告管理对象 t_experiment_report
 *
 * @author ruoyi
 * @date 2025-08-31
 */
public class ExperimentReport extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 报告ID
     */
    private Long reportId;

    /**
     * 关联实验项目ID
     */
    @Excel(name = "关联实验项目ID")
    private Long classProjectId;

    /**
     * 关联学生ID
     */
    @Excel(name = "关联学生ID")
    private Long studentId;

    @Excel(name = "学生姓名")
    private String studentName;


    private Long classId;

    @Excel(name = "班级")
    private String className;

    @Excel(name = "课程ID")
    private Long courseId;

    @Excel(name = "课程")
    private String courseName;

    @Excel(name = "实验项目ID")
    private Long projectId;

    @Excel(name = "实验项目")
    private String projectName;

    private Long semesterId;

    @Excel(name = "学期")
    private String semesterName;


    /**
     * 报告标题
     */
    @Excel(name = "报告标题")
    private String reportTitle;

    /**
     * 报告内容
     */
    @Excel(name = "报告内容")
    private String reportContent;

    /**
     * 实验目的和要求
     */
    private String experimentPurposeDemand;

    /**
     * 实验原理
     */
    private String experimentPrinciple;

    /**
     * 实验设备
     */
    private String experimentEquipment;

    /**
     * 实验步骤
     */
    private String experimentProcedure;

    /**
     * 实验结果与分析
     */
    private String experimentResultAnalysis;

    /**
     * 提交时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date submitTime;

    /**
     * 实验预习成绩
     */
    private Long experimentPreparationScore;

    /**
     * 操作过程成绩
     */
    private Long operationProcessScore;

    /**
     * 结果分析成绩
     */
    private Long resultAnalysisScore;

    /**
     * 总成绩
     */
    private Long totalScore;

    /**
     * 评语
     */
    @Excel(name = "评语")
    private String comment;

    @Excel(name = "批阅时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date reviewTime;

    /**
     * 报告附件路径
     */
    @Excel(name = "报告附件路径")
    private String filePath;


    public Long getReportId() {
        return reportId;
    }

    public void setReportId(Long reportId) {
        this.reportId = reportId;
    }

    public Long getClassProjectId() {
        return classProjectId;
    }

    public void setClassProjectId(Long classProjectId) {
        this.classProjectId = classProjectId;
    }

    public Long getStudentId() {
        return studentId;
    }

    public void setStudentId(Long studentId) {
        this.studentId = studentId;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public Long getClassId() {
        return classId;
    }

    public void setClassId(Long classId) {
        this.classId = classId;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public Long getCourseId() {
        return courseId;
    }

    public void setCourseId(Long courseId) {
        this.courseId = courseId;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public Long getProjectId() {
        return projectId;
    }

    public void setProjectId(Long projectId) {
        this.projectId = projectId;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public Long getSemesterId() {
        return semesterId;
    }

    public void setSemesterId(Long semesterId) {
        this.semesterId = semesterId;
    }

    public String getSemesterName() {
        return semesterName;
    }

    public void setSemesterName(String semesterName) {
        this.semesterName = semesterName;
    }

    public String getReportTitle() {
        return reportTitle;
    }

    public void setReportTitle(String reportTitle) {
        this.reportTitle = reportTitle;
    }

    public String getReportContent() {
        return reportContent;
    }

    public void setReportContent(String reportContent) {
        this.reportContent = reportContent;
    }

    public String getFilePath() {
        return filePath;
    }

    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }

    public String getExperimentPurposeDemand() {
        return experimentPurposeDemand;
    }

    public void setExperimentPurposeDemand(String experimentPurposeDemand) {
        this.experimentPurposeDemand = experimentPurposeDemand;
    }

    public String getExperimentPrinciple() {
        return experimentPrinciple;
    }

    public void setExperimentPrinciple(String experimentPrinciple) {
        this.experimentPrinciple = experimentPrinciple;
    }

    public String getExperimentEquipment() {
        return experimentEquipment;
    }

    public void setExperimentEquipment(String experimentEquipment) {
        this.experimentEquipment = experimentEquipment;
    }

    public String getExperimentProcedure() {
        return experimentProcedure;
    }

    public void setExperimentProcedure(String experimentProcedure) {
        this.experimentProcedure = experimentProcedure;
    }

    public String getExperimentResultAnalysis() {
        return experimentResultAnalysis;
    }

    public void setExperimentResultAnalysis(String experimentResultAnalysis) {
        this.experimentResultAnalysis = experimentResultAnalysis;
    }

    public Date getSubmitTime() {
        return submitTime;
    }

    public void setSubmitTime(Date submitTime) {
        this.submitTime = submitTime;
    }

    public Long getExperimentPreparationScore() {
        return experimentPreparationScore;
    }

    public void setExperimentPreparationScore(Long experimentPreparationScore) {
        this.experimentPreparationScore = experimentPreparationScore;
    }

    public Long getOperationProcessScore() {
        return operationProcessScore;
    }

    public void setOperationProcessScore(Long operationProcessScore) {
        this.operationProcessScore = operationProcessScore;
    }

    public Long getResultAnalysisScore() {
        return resultAnalysisScore;
    }

    public void setResultAnalysisScore(Long resultAnalysisScore) {
        this.resultAnalysisScore = resultAnalysisScore;
    }

    public Long getTotalScore() {
        return totalScore;
    }

    public void setTotalScore(Long totalScore) {
        this.totalScore = totalScore;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    public Date getReviewTime() {
        return reviewTime;
    }

    public void setReviewTime(Date reviewTime) {
        this.reviewTime = reviewTime;
    }

    @Override
    public String toString() {
        return "ExperimentReport{" +
                "reportId=" + reportId +
                ", classProjectId=" + classProjectId +
                ", studentId=" + studentId +
                ", studentName='" + studentName + '\'' +
                ", classId=" + classId +
                ", className='" + className + '\'' +
                ", courseId=" + courseId +
                ", courseName='" + courseName + '\'' +
                ", projectId=" + projectId +
                ", projectName='" + projectName + '\'' +
                ", semesterId=" + semesterId +
                ", semesterName='" + semesterName + '\'' +
                ", reportTitle='" + reportTitle + '\'' +
                ", reportContent='" + reportContent + '\'' +
                ", filePath='" + filePath + '\'' +
                ", experimentPurposeDemand='" + experimentPurposeDemand + '\'' +
                ", experimentPrinciple='" + experimentPrinciple + '\'' +
                ", experimentEquipment='" + experimentEquipment + '\'' +
                ", experimentProcedure='" + experimentProcedure + '\'' +
                ", experimentResultAnalysis='" + experimentResultAnalysis + '\'' +
                ", submitTime=" + submitTime +
                ", experimentPreparationScore=" + experimentPreparationScore +
                ", operationProcessScore=" + operationProcessScore +
                ", resultAnalysisScore=" + resultAnalysisScore +
                ", totalScore=" + totalScore +
                ", COMMENT='" + comment + '\'' +
                ", reviewTime=" + reviewTime +
                '}';
    }
}
